library(tidyverse)
library(here) #gérer les chemins de fichiers et de répertoires
library(plotly) # créer des graphiques interactifs
# Définition du chemin d'acces
path1=here("TP 3 - Logiciel statistique R/Donnees", "annual-growth-in-gni-per-capita.csv")
path2=here("TP 3 - Logiciel statistique R/Donnees", "population-growth-annual.csv")
path3=here("TP 3 - Logiciel statistique R/Donnees", "gender-inequality-index.csv")
# importation de la base sous format csv
agpc <-read.csv(path1)
pga<-read.csv(path2)
gii <-read.csv(path3)
niger_agpc=agpc |>
#extraire la base qui contient les données sur le niger
filter(`Region.Name` %in% c("Niger")) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`)
## Afrique de l'ouest
#Bénin, Burkina Faso, Côte d'Ivoire, Cap-Vert, Gambie, Ghana, Guinée,
#Guinée-Bissau, Libéria, Mali, Mauritanie, Niger, Nigeria, Sénégal,
#Sierra Leone et Togo.
western_afri_agpc=agpc |>
#extraire la base qui contient les données sur les pays de l'Afrique de l'ouest
filter(`Region.Name` %in% c( "Benin","Burkina Faso","Côte d’Ivoire"
,"Cabo Verde" ,"Gambia","Ghana","Guinea",
"Guinea-Bissau","Liberia","Mali","Mauritania",
"Nigeria","Niger","Senegal","Sierra Leone",
"Togo")) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#convertir la variable value en numérique
mutate(Value = as.numeric(Value)) |>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`) |>
#aggregation des données par année
group_by(`Annee`) |>
#calcul de la moyenne par année
summarise(Value = mean(Value))
#créer une nouvelle variable region pour constituer la base Afrique de l'ouest
#repeter "Western Africa" autant de fois qu'il y de ligne
western_afri_agpc$`Region`<- rep("Western Africa", nrow(western_afri_agpc))
western_afri_agpc_ord<-western_afri_agpc|>
#reordonner les variables
dplyr::select(`Region`, `Annee`, `Value`)
## Monde
rew_agpc <- agpc |>
#convertir la variable value en numérique
mutate(Value= as.numeric(Value)) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`) |>
#aggregation des données par année
group_by(`Annee`) |>
#calcul de la moyenne par année
summarise(Value = mean(Value))
#création d'une nouvelle variable region pour constituer la base monde
rew_agpc$`Region`<- rep("World", nrow(rew_agpc) )
rew_agpc_ord<-rew_agpc |>
#ordonner les variables
dplyr::select(`Region`, `Annee`, `Value`)
## Base finale
#fusionner les données par ligne (superposition)
agpc_ni_wa_DB<- rbind(niger_agpc,western_afri_agpc, rew_agpc_ord )
pal=c("#7209b7", "#ffb703","#219ebc")
agpc_ni_wa_DB |>
#Convertir Value en numérique
mutate(Value = as.numeric(Value)) |>
ggplot(aes(Annee, Value, color = Region )) +
#show.legend=NULL signifie que cette couche ne sera pas incluse dans la légende
geom_line(size = 1, show.legend=NULL)+
geom_point(size = 1.5)+
theme_minimal()+
scale_y_continuous(limits = c(-30, 10)) + # Limites de l'axe y
#contrôle de l'échelle de l'axe des x;
#breaks= emplacement des marques et
#labels= étiquettes associées aux marques
scale_x_continuous(breaks=c(1970,1980,1990,2000,2010,2020),
labels = c("1970","1980","1990","2000",
"2010","2020"))+
#définir les couleurs des courbes suivant la palette de couleur définie
scale_color_manual(values = pal)+
#Définir le titre du graphique en italique
ggtitle(expression(italic("Figure : Income growth and distribution (Gini Index)"))) +
# supprimer les étiquettes des axes et définir la source
labs(colour = "",
x="",
y="",
caption = "Source: World Bank")+
theme(
plot.title = element_text(color = "blue",
face = "italic",
size=11, vjust = 8, hjust = -0.17),
plot.caption = element_text(face = "italic", hjust = -0.095),
#lignes (pleines) principales verticales
panel.grid.major.x = element_line(colour = "grey",
size = 0.1,
linetype = "solid"),
# Supprime les lignes de grille secondaires
panel.grid.minor.x = element_blank(),
#lignes (pointillées) principale horizontales
panel.grid.major.y = element_line(colour = "grey",
size = 0.1,
linetype = "dashed"),
# Supprime les lignes de grille secondaires
panel.grid.minor.y = element_blank(),
legend.position = c(0.12, 1.05), # position de la legende
legend.direction="horizontal",# direction de la legende
#définir les marges du cadran du graphique
plot.margin = margin(1, 1, 1, 1, "cm")
)+
#Ajuster la taille des points dans la légende
guides(color = guide_legend(override.aes = list(size = 3)))

## Niger
niger_pga=pga |>
#extraire la base qui contient les données sur le niger
filter(`Region.Name` %in% c("Niger")) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`)
## Afrique de l'ouest
#Bénin, Burkina Faso, Côte d'Ivoire, Cap-Vert, Gambie, Ghana, Guinée,
#Guinée-Bissau, Libéria, Mali, Mauritanie, Niger, Nigeria, Sénégal,
#Sierra Leone et Togo.
western_afri_pga=pga |>
#extrair la base qui contient les données sur les pays de l'Afrique de l'ouest
filter(`Region.Name` %in% c( "Benin","Burkina Faso","Côte d’Ivoire" ,
"Cabo Verde" ,"Gambia","Ghana","Guinea",
"Guinea-Bissau","Liberia","Mali","Mauritania",
"Nigeria","Niger","Senegal","Sierra Leone",
"Togo")) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#convertir la variable value en numérique
mutate(Value = as.numeric(Value)) |>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`) |>
#aggregation des données par année
group_by(`Annee`) |>
#calcul de la moyenne par année
summarise(Value = mean(Value))
#créer d'une nouvelle variable region pour constituer la base Afriqye de l'ouest
#repeter "Western Africa" autant de fois qu'il y de ligne
western_afri_pga$`Region`<- rep("Western Africa", nrow(western_afri_pga))
western_afri_pga_ord<-western_afri_pga|>
#reordonner les variables
dplyr::select(`Region`, `Annee`, `Value`)
## Monde
re_w <- pga |>
#convertir la variable value en numérique
mutate(Value= as.numeric(Value)) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`) |>
#aggregation des données par année
group_by(`Annee`) |>
#calcul de la moyenne par année
summarise(Value = mean(Value))
#création d'une nouvelle variable region pour constituer la base monde
re_w$`Region`<- rep("World", nrow(re_w) )
re_w_ord<-re_w |>
#ordonner les variables
dplyr::select(`Region`, `Annee`, `Value`)
## Base finale
#fusionner les données par ligne (superposition)
pga_ni_wa_w_DB<- rbind(niger_pga, re_w_ord,western_afri_pga_ord)
pal2=c("#4682B4","#E7B800", "#FC4E07")
pga_ni_wa_w_DB |>
#Convertir Value en numérique
mutate(Value = as.numeric(Value)) |>
ggplot(aes(Annee, Value, color = Region )) +
#show.legend=NULL signifie que cette couche ne sera pas incluse dans la légende
geom_line(size = 1, show.legend=NULL)+
geom_point(size = 1.5)+
theme_minimal()+
scale_y_continuous(limits = c(0.2, 3.91)) +# Limites de l'axe y
#contrôle de l'échelle de l'axe des x;
#breaks= emplacement des marques et
#labels= étiquettes associées aux marques
scale_x_continuous(breaks=c(1960,1970,1980,1990,2000,2010,2020),
labels = c("1960","1970","1980","1990","2000",
"2010","2020"))+ #
scale_color_manual(values = pal2)+ #définir les couleurs des courbes
# Définir le titre du graphique en italique
ggtitle(expression(italic("Figure: Annual population growth (%)"))) +
# supprimer les étiquettes des axes et définir la source
labs(colour = "",
x="",
y="",
caption = "Source: World Bank")+
theme(
plot.title = element_text(color = "blue", face = "italic",
size=11, vjust = 8, hjust = -0.12),
plot.caption = element_text(face = "italic", hjust = -0.095),
#lignes (pleines) principales verticales
panel.grid.major.x = element_line(colour = "grey",
size = 0.1, linetype = "solid"),
panel.grid.minor.x = element_blank(),
# lignes (pointillées) principale horizontales
panel.grid.major.y = element_line(colour = "grey",
size = 0.1, linetype = "dashed"),
# Supprime les lignes de grille secondaires
panel.grid.minor.y = element_blank(),
legend.position = c(0.12, 1.05), # position de la legende
legend.direction="horizontal",# direction de la legende
# définir les marges du cadran du graphique
plot.margin = margin(1, 1, 1, 1, "cm")) +
# Taille des points dans la légende
guides(color = guide_legend(override.aes = list(size = 3)))

## Niger
niger_gii=gii |>
#extraire la base qui contient les données sur le niger
filter(`Region.Name` %in% c("Niger")) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`)
## Afrique de l'ouest
#Bénin, Burkina Faso, Côte d'Ivoire, Cap-Vert, Gambie, Ghana, Guinée,
#Guinée-Bissau, Libéria, Mali, Mauritanie, Niger, Nigeria, Sénégal,
#Sierra Leone et Togo.
western_afri_gii=gii |>
#extrair la base qui contient les données sur les pays de l'Afrique de l'ouest
filter(`Region.Name` %in% c( "Benin","Burkina Faso","Côte d’Ivoire" ,
"Cabo Verde" ,"Gambia","Ghana","Guinea",
"Guinea-Bissau","Liberia","Mali","Mauritania",
"Nigeria","Niger","Senegal","Sierra Leone",
"Togo")) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#convertir la variable value en numérique
mutate(Value = as.numeric(Value)) |>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`) |>
#aggregation des données par année
group_by(`Annee`) |>
#calcul de la moyenne par année
summarise(Value = mean(Value))
#créer d'une nouvelle variable region pour constituer la base Afriqye de l'ouest
#repeter "Western Africa" autant de fois qu'il y de ligne
western_afri_gii$`Region`<- rep("Western Africa", nrow(western_afri_gii))
western_afri_gii_ord<-western_afri_gii|>
#reordonner les variables
dplyr::select(`Region`, `Annee`, `Value`)
## Monde
re_w_gii <- gii |>
#convertir la variable value en numérique
mutate(Value= as.numeric(Value)) |>
#selectionner seulement les variables intéressantes
dplyr::select(`Region.Name`, `End.Year`, `Value`)|>
#renommage des variables
rename(Annee=`End.Year`, Region=`Region.Name`) |>
#aggregation des données par année
group_by(`Annee`) |>
#calcul de la moyenne par année
summarise(Value = mean(Value))
#création d'une nouvelle variable region pour constituer la base monde
re_w_gii$`Region`<- rep("World", nrow(re_w_gii) )
re_w_gii_ord<-re_w_gii |>
#ordonner les variables
dplyr::select(`Region`, `Annee`, `Value`)
## Base finale
gii_ni_wa_w_DB<- rbind(niger_gii, re_w_gii_ord,western_afri_gii_ord)
# Graphique interactive
pal3=c("#7209b7", "#f77f00", "#2d00f7")
P=gii_ni_wa_w_DB |>
#Convertir Value en numérique
mutate(Value = as.numeric(Value)) |>
ggplot(aes(Annee, Value, fill=Region , color = Region)) +
geom_point(size = 1, aes(text=paste(Region,":", round(Value,1))))+
geom_line(size = 0.75)+
scale_fill_hue(direction=1)+
theme_minimal()+
scale_y_continuous(limits = c(0.1, 0.8)) + # Limites de l'axe y
#contrôle de l'échelle de l'axe des x;
#breaks= emplacement des marques et labels= étiquettes associées aux marques.
scale_x_continuous(breaks=c(1990,1995,2000,2005,2010,2015,2020),
labels = c("1990","1995","2000","2005","2010","2015","2020"))+
scale_color_manual(values = pal3)+ # définir les couleurs des courbes
scale_fill_manual(values = pal3)+
ggtitle("Figure : Gender inequality index") +
# supprimer les étiquettes des axes et de la légende
labs(color = NULL,
x="",
y="",
fill="" )+
theme(
# mise en forme du titre du graphique
plot.title = element_text(color = "blue",
face = "italic", size =11),
# définir les marges du cadran du graphique
plot.margin = margin(1, 1, 1, 1, "cm"))+
# Taille des points dans la légende
guides(color = guide_legend(override.aes = list(size = 3)))
# Convertir le graphique ggplot P en une version interactive avec ggplotly
ggplotly(P, tooltip="text") |>
plotly::layout(title = list(
# Définir le titre du graphique avec une police bleue, italique et une taille
font = list(color = "blue", face = "italic", size = 12)),
legend=list(title = NULL, # Supprimer le titre de la légende
# Positionner la légende à l'extrémité gauche du graphique
x = 0,
# Positionner la légende en haut du graphique
y = 1.1,
# Définir l'orientation horizontale de la légende
orientation = 'h' ),
# définition de la source
annotations = list(
x = 0.1, # Position x de la source
y = -0.15, # Position y de la source
text = "Source : UNDP", # Texte de la source
showarrow = F, # Supprime la flèche de la source
xref = 'paper', # Référence de la position x
yref = 'paper', # Référence de la position y
xanchor = 'right', # Positionner la source à droite sur X
yanchor = 'auto', # Positionner la source à droite sur Y
# Personnaliser la police de la source
font = list(size = 11, color = "black"))
)